package main

import "fmt"

//数组是值类型——函数传参讲不被更改;只能取值，修改值后方法体外部不改变
//数组被定义，长度不可修改
func main() {
	arrayStr := [2]string{"123", "asd"}
	println("arrayStr", arrayStr[0])

	for k, v := range arrayStr {
		println("arrayStr", k, v)
	}

	testArray(arrayStr)
	println(arrayStr[0])

	//系统推导数组长度
	arrayInt := [...]int8{2, 3}
	println("arrayInt", arrayInt[0])

	//使用索引值初始化
	arraySyz := [...]string{1: "南京", 3: "徐州", 5: "北京"}
	fmt.Printf("arraySyz= %T\n", arraySyz)
	fmt.Printf("arraySyz len", len(arraySyz))

	//遍历-1
	for i := 0; i < len(arraySyz); i++ {
		fmt.Println(arraySyz[i])
	}

	//遍历-2
	for index, value := range arraySyz {
		fmt.Println(index, value)
	}
	for index := range arraySyz {
		fmt.Println(index)
	}
	//"_"接收一个用不到的变量
	for _, value := range arraySyz {
		fmt.Println(value)
	}

	//二位数组_多维数组只有最外层才能推导长度 cityArray := [...][2]string{}
	cityArray := [3][2]string{
		{"北京", "上海"},
		{"广州", "深圳"},
		{"南京", "合肥"},
	}
	fmt.Println(cityArray)
	fmt.Println(cityArray[2][0])
	for _, v1 := range cityArray {
		fmt.Println(v1)
		for _, v2 := range v1 {
			fmt.Println(v2)
		}
	}
}

func testArray(param [2]string) {
	param[0] = "adsadsa"
	println(param[0])
}

func testArray2(param *[2]string) {
	param[0] = "adsadsa"
	println(param[0])
}
